///*  File Name	: WaitPid.cpp
// *  Author		: Pang Jiacai
// *	 E-mail		: 823960168@qq.com
// *  Created on	: 2012-9-27
// *  Description:
// */
//
//#include <stdlib.h>
//#include <stdio.h>
//#include <signal.h>
//#include <iostream>
//#include <wait.h>
//
//int pid1_fun(void);
//int pid2_fun(void);
//int register_signal(int signum);
//
//static void dispatch (int signum, siginfo_t *info,void *p)
//{
//	std::cout <<"signum:"<<signum << std::endl;
//}
//
//int main()
//{
//	register_signal(SIGCHLD);
//
//	int pid1 = fork();
//	if(pid1==0)
//	{
//		pid1_fun();
//		return 0;
//	}
//
//	int pid2 = fork();
//	if(pid2==0)
//	{
//		pid2_fun();
//		return 0;
//	}
//
//	int *status = 0;
//	while(true)
//	{
//		sleep(2);
//		int exit_pid = ::waitpid (WAIT_ANY,status, WNOHANG);
//		std::cout << "exit_pid:"<<exit_pid <<std::endl;
//	}
//
//	return 0;
//}
//
//
//int pid1_fun(void)
//{
//	std::cout <<"pid1:"<< getpid() << std::endl;
//	sleep(10);
//	return 0;
//}
//
//int pid2_fun(void)
//{
//	std::cout <<"pid2:"<< getpid() << std::endl;
//	sleep(20);
//	return 0;
//}
//
//int register_signal(int signum)
//{
//	struct sigaction sa;
//	sigemptyset(&sa.sa_mask);
//	sa.sa_flags = SA_SIGINFO;
//	sa.sa_sigaction = dispatch;
//	return ::sigaction(signum, &sa, &sa);
//}
